package top.yehot.kettle.boot.models.dto;

import org.quartz.Job;
import org.quartz.JobDataMap;

import lombok.Getter;
import lombok.Setter;
import top.yehot.kettle.boot.core.SysConst;
import top.yehot.kettle.boot.core.task.KettleJob;

/**
 * 定时任务需要的参数
 * 
 * @author lquan
 * @date 2022年6月6日 上午12:27:54
 */
@Getter
@Setter
public class TaskDto {

	/**
	 * 任务名-自定义
	 */
	private String jobName;

	/**
	 * 任务所属组名-自定义
	 */
	private String jobGroupName;

	/**
	 * 触发器名-自定义
	 */
	private String triggerName;

	/**
	 * 触发器所属组名-自定义
	 */
	private String triggerGroupName;

	/**
	 * cron定时策略
	 */
	private String cron;
	
	/**
	 * 任务执行参数-可以传入任意类型的数据给执行类
	 */
	private JobDataMap jobDataMap;
	
	/**
	 * 任务执行类-实现了{@code org.quartz.Job}接口的类
	 */
	private Class<? extends Job> jobClass = KettleJob.class;
	
	public static TaskDto packageDto(String taskName, String cron, JobDataMap jobDataMap) {
		TaskDto dto = new TaskDto();
		dto.setJobName(taskName + SysConst.QUARTZ_JOB);
		dto.setJobGroupName(SysConst.QUARTZ_JOB_GROUP);
		dto.setTriggerName(taskName + SysConst.QUARTZ_TRIGGER);
		dto.setTriggerGroupName(SysConst.QUARTZ_TRIGGER_GROUP);
		dto.setCron(cron);
		dto.setJobDataMap(jobDataMap);
		return dto;
	}
}
